package com.ssy.lingxi.search.service;

import com.ssy.lingxi.common.constant.tree.Node;
import com.ssy.lingxi.search.api.model.response.AttributeResponse;
import com.ssy.lingxi.search.api.model.response.BrandResponse;
import com.ssy.lingxi.search.api.model.response.CategoryTreeBrandResponse;
import com.ssy.lingxi.search.api.model.response.ProvinceResponse;

import java.util.List;

/**
 * 自营商城搜索管理类
 * @author jw.chen
 * @version 2.0.0
 * @date 2021/10/15
 */
public interface ISelfService {

    /**
     * 查询商品品类树
     * @param shopId 商城id
     * @param memberId 会员id
     * @return 商品品类树
     */
    List<Node> getCategoryTree(Long shopId, Long memberId);

    /**
     * 查询商品品类树和对应的品牌
     * @param shopId 商城id
     * @param memberId 会员id
     * @return 商品品类树和对应的品牌
     */
    List<CategoryTreeBrandResponse> getCategoryTreeAndBrand(Long shopId, Long memberId);

    /**
     * 查询商品属性
     * @param shopId 商城id
     * @param memberId 会员id
     * @param categoryId 品类id
     * @return 商品属性
     */
    List<AttributeResponse> getAttributeByCategoryId(Long shopId, Long memberId, Long categoryId);

    /**
     * 查询商品品牌
     * @param shopId 商城id
     * @param memberId 会员id
     * @return 商品品牌
     */
    List<BrandResponse> getBrand(Long shopId, Long memberId);

    /**
     * 查询归属地市
     * @param shopId 商城id
     * @param memberId 会员id
     * @return 归属地市
     */
    List<ProvinceResponse> getArea(Long shopId, Long memberId);

    /**
     * 查询商品最大价格/最大积分
     * @param shopId 商城id
     * @param memberId 会员id
     * @return 商品最大价格/最大积分
     */
    Double getCommodityMaxPrice(Long shopId, Long memberId);
}
